# -*- coding: utf-8 -*-

#Descrição: Classe para processar dados HTML
#Data: 12/12/11
#Autor: Luís Costa Nº 6032
#-----------------------------------------------

class ProcessHTML:

    
    #Cria um ficheiro HTML com a listagem dos docentes por estabelecimento
    #e por ano. Recebe um dicionário com o resultado da estatistica.
    #--------------------------------
    def list_teachers_per_establishment(self, dictData):
        
        print 'A criar o ficheiro da listagem HTML...'

        #Abre o ficheiro HTML para escrita
        #--------------------
        htmlFile = file("index.html", "w")
    
        #Coloca os dados numa string para escrever no fim para o ficheiro
        #-----------------------
        strData = "<html>\n"
        
        #Para defenir o encoding do HTML como UTF-8
        strData = strData + "<meta http-equiv=\"Content-type\"" \
                                "content=\"text/html;charset=UTF-8\">\n"
                                
        #Inicialização da tabela
        strData = strData + ("<table border =\"1\">\n")
        strData = strData + ("<caption>Professores por estabelecimento e "\
                        "por ano</caption>\n")
        strData = strData + ("<tr><th>Ano</th>\n")
        strData = strData + ("<th>Estabelecimento</th>\n")
        strData = strData + ("<th>Cod. Docente</th>\n")
        strData = strData + ("<th>Nome Docente</th></tr>\n")
        
        #Insere uma linha na tabela por cada registos no dicionario
        #-----------------------
        #Cria uma lista de listas com os valores a inserir
        #------------
        
        print 'A construir a tabela com os dados...'
        
        for ano in sorted(dictData.iterkeys()):
            
            dictEstabs = dictData[ano]
                       
            for estab in sorted(dictEstabs.iterkeys()):
                
                dictDocentes = dictEstabs[estab]
                for codDocente in sorted(dictDocentes.iterkeys()):
                    
                    nomeDocente = dictDocentes[codDocente]

                    strData = strData + ("<tr>\n")
                    strData = strData + ("<td>" + str(ano) + "</td>\n")
                    strData = strData + ("<td>" + estab + "</td>\n")
                    strData = strData + ("<td>" + str(codDocente) + "</td>\n")
                    strData = strData + ("<td>" + nomeDocente + "</td>\n")
                    strData = strData + ("</tr>\n")
                pass
            pass
        pass
        strData = strData + ("</table>\n")
        strData = strData + ("</html>\n")
        
        #Escreve a string com os dados no ficheiro
        #-----------
        htmlFile.write(strData)
        htmlFile.close()
        
        print 'Ficheiro da listagem HTML criádo com sucesso!'
    pass

    #Cria um ficheiro HTML com a listagem dos docentes por grau, 
    #por estabelecimento e por ano. 
    #Recebe um dicionário com o resultado da estatistica.
    #--------------------------------
    def list_teachers_per_category_establishment_year(self, dictData):
        
        print 'A criar o ficheiro da listagem HTML...'

        #Abre o ficheiro HTML para escrita
        #--------------------
        htmlFile = file("index.html", "w")
    
        #Coloca os dados numa string para escrever no fim para o ficheiro
        #-----------------------
        strData = "<html>\n"
        
        #Para defenir o encoding do HTML como UTF-8
        strData = strData + "<meta http-equiv=\"Content-type\"" \
                                "content=\"text/html;charset=UTF-8\">\n"
                                
        #Inicialização da tabela
        strData = strData + ("<table border =\"1\">\n")
        strData = strData + ("<caption>Professores por categoria por "\
                        "estabelecimento e por ano</caption>\n")
        strData = strData + ("<tr><th>Grau</th>\n")
        strData = strData + ("<th>Estabelecimento</th>\n")
        strData = strData + ("<th>Ano</th>\n")
        strData = strData + ("<th>Cod. Docente</th>\n")
        strData = strData + ("<th>Nome Docente</th></tr>\n")
        
        #Insere uma linha na tabela por cada registos no dicionario
        #-----------------------
        #Cria uma lista de listas com os valores a inserir
        #------------
        print 'A construir a tabela com os dados...'
        
        for grau in sorted(dictData.iterkeys()):

            dictGraus = dictData[grau]

            for estab in sorted(dictGraus.iterkeys()):
                
                dictEstabs = dictGraus[estab]
                           
                for ano in sorted(dictEstabs.iterkeys()):
                    
                    dictDocentes = dictEstabs[ano]
                    for codDocente in sorted(dictDocentes.iterkeys()):
                        
                        nomeDocente = dictDocentes[codDocente]

                        strData = strData + ("<tr>\n")
                        strData = strData + ("<td>" + grau + "</td>\n")
                        strData = strData + ("<td>" + estab + "</td>\n")
                        strData = strData + ("<td>" + str(ano) + "</td>\n")
                        strData = strData + ("<td>" + str(codDocente) + "</td>\n")
                        strData = strData + ("<td>" + nomeDocente + "</td>\n")
                        strData = strData + ("</tr>\n")
                    pass
                pass
            pass
        pass
        strData = strData + ("</table>\n")
        strData = strData + ("</html>\n")
        
        #Escreve a string com os dados no ficheiro
        #-----------
        htmlFile.write(strData)
        htmlFile.close()
        
        print 'Ficheiro da listagem HTML criádo com sucesso!'
    pass

    #Cria um ficheiro HTML com a listagem dos docentes por tipo de grau, 
    #por estabelecimento e por ano. 
    #Recebe um dicionário com o resultado da estatistica.
    #--------------------------------
    def list_teachers_per_type_degree_establishment_year(self, dictData):
        
        print 'A criar o ficheiro da listagem HTML...'

        #Abre o ficheiro HTML para escrita
        #--------------------
        htmlFile = file("index.html", "w")
    
        #Coloca os dados numa string para escrever no fim para o ficheiro
        #-----------------------
        strData = "<html>\n"
        
        #Para defenir o encoding do HTML como UTF-8
        strData = strData + "<meta http-equiv=\"Content-type\"" \
                                "content=\"text/html;charset=UTF-8\">\n"
                                
        #Inicialização da tabela
        strData = strData + ("<table border =\"1\">\n")
        strData = strData + ("<caption>Professores por tipo de grau por "\
                        "estabelecimento e por ano</caption>\n")
        strData = strData + ("<tr><th>Tipo de Grau</th>\n")
        strData = strData + ("<th>Estabelecimento</th>\n")
        strData = strData + ("<th>Ano</th>\n")
        strData = strData + ("<th>Cod. Docente</th>\n")
        strData = strData + ("<th>Nome Docente</th></tr>\n")
        
        #Insere uma linha na tabela por cada registos no dicionario
        #-----------------------
        #Cria uma lista de listas com os valores a inserir
        #------------
        print 'A construir a tabela com os dados...'
        
        for tipoGrau in sorted(dictData.iterkeys()):

            dictTiposGrau = dictData[tipoGrau]

            for estab in sorted(dictTiposGrau.iterkeys()):
                
                dictEstabs = dictTiposGrau[estab]
                           
                for ano in sorted(dictEstabs.iterkeys()):
                    
                    dictDocentes = dictEstabs[ano]
                    for codDocente in sorted(dictDocentes.iterkeys()):
                        
                        nomeDocente = dictDocentes[codDocente]
                        
                        strData = strData + ("<tr>\n")
                        strData = strData + ("<td>" + tipoGrau + "</td>\n")
                        strData = strData + ("<td>" + estab + "</td>\n")
                        strData = strData + ("<td>" + str(ano) + "</td>\n")
                        strData = strData + ("<td>" + str(codDocente) + "</td>\n")
                        strData = strData + ("<td>" + nomeDocente + "</td>\n")
                        strData = strData + ("</tr>\n")
                    pass
                pass
            pass
        pass
        strData = strData + ("</table>\n")
        strData = strData + ("</html>\n")
        
        #Escreve a string com os dados no ficheiro
        #-----------
        htmlFile.write(strData)
        htmlFile.close()
        
        print 'Ficheiro da listagem HTML criádo com sucesso!'
    pass
